class Visita < ActiveRecord::Base

  scope_out :este_mes, :conditions=>"MONTH(fecha)=MONTH(CURDATE()) and YEAR(fecha)=YEAR(CURDATE())"
  scope_out :ultimo_mes, :conditions=>"DATEDIFF(CURDATE(),fecha) < 31"
  scope_out :perfil, :conditions=>"(coeficiente_id>#{Coeficiente::FP} AND coeficiente_id<#{Coeficiente::ALUMNO}) OR coeficiente_id=#{Coeficiente::EXALUMNO}"
  scope_out :fp, :conditions=>"coeficiente_id=#{Coeficiente::FP}"
  scope_out :fp_este_mes, :conditions=>"(coeficiente_id=#{Coeficiente::FP}) AND MONTH(fecha)=MONTH(CURDATE()) and YEAR(fecha)=YEAR(CURDATE())"
  scope_out :perfil_este_mes, :conditions=>"((coeficiente_id>#{Coeficiente::FP} AND coeficiente_id<#{Coeficiente::ALUMNO}) OR coeficiente_id=#{Coeficiente::EXALUMNO}) AND MONTH(fecha)=MONTH(CURDATE()) and YEAR(fecha)=YEAR(CURDATE())"
  scope_out :perfil_ultimo_mes, :conditions=>"((coeficiente_id>#{Coeficiente::FP} AND coeficiente_id<#{Coeficiente::ALUMNO}) OR coeficiente_id=#{Coeficiente::EXALUMNO}) AND DATEDIFF(CURDATE(),fecha) < 31"

  belongs_to :comosupo
  belongs_to :persona
  belongs_to :instructor
  
  # al crear la visita toma el coeficiente de la persona visitante. (esto se hace en visitas/ create y create_visita_persona )
  # asi ya queda guardado para historicos, estadisitcas y eso
  belongs_to :coeficiente
  
  has_one :matricula # se le puede poner :conditions=> aca.

  validates_presence_of :persona_id, :message=>'^Falt&oacute; especificar la persona que realiz&oacute; la visita.'
  validates_presence_of :fecha, :message=>'^Falt&oacute; especificar la fecha de la visita.'
  validates_presence_of :instructor_id, :message=>'^Falt&oacute; especificar el instructor que realiz&oacute; la entrevista.'
  
  def validate_on_create
    # solo puede haber una visita por mes de la misma persona
    unless persona and persona.visitas.find(:all, :conditions=>"MONTH(fecha)=#{fecha.month} and YEAR(fecha)=#{fecha.year}").length == 0 then
      errors.add "Fecha inv&aacute;lida:","Este mes ya se registr&oacute; una visita de esta persona."
    end
    
    unless coeficiente then
      K_LOGGER.error "#{current_user.login}: model/visita: Se genera una visita y no se realiza la copia del coeficiente de la persona a la visita."
      errors.add "", "Hubo un error interno, no se realiz&oacute; la copia del coeficiente de la persona a la visita. Contacte al administrador."
    end
  end
  
  def matriculo?
    return matricula != nil
  end
  
  def nro_visita_del_mes
    # TODO retorna el numero de visita del mes que es.
    return '.'
    # en la base de datos salta un error raro
#    return Visita.count(:conditions=>"TIMEDIFF(fecha,'#{fecha.strftime(MYSQL_DATETIME)}')<0 AND MONTH(fecha)=#{fecha.month} AND YEAR(fecha)=#{fecha.year}")
  end
end
